#ifndef HTTP_H
#define HTTP_H

#define HTTP_CONTINUE 100
#define HTTP_SWITCHING_PROTOCOLS 101
#define HTTP_PROCESSING 102
#define HTTP_OK 200
#define HTTP_CREATED 201
#define HTTP_ACCEPTED 202
#define HTTP_NON_AUTHORITATIVE_INFORMATION 203
#define HTTP_NO_CONTENT 204
#define HTTP_RESET_CONTENT 205
#define HTTP_PARTIAL_CONTENT 206
#define HTTP_MULTIPLE_CHOICES 300
#define HTTP_MOVED_PERMANENTLY 301
#define HTTP_FOUND 302
#define HTTP_SEE_OTHER 303
#define HTTP_NOT_MODIFIED 304
#define HTTP_USE_PROXY 305
#define HTTP_TEMPORARY_REDIRECT 307
#define HTTP_BAD_REQUEST 400
#define HTTP_UNAUTHORIZED 401
#define HTTP_PAYMENT_REQUIRED 402
#define HTTP_FORBIDDEN 403
#define HTTP_NOT_FOUND 404
#define HTTP_METHOD_NOT_ALLOWED 405
#define HTTP_NOT_ACCEPTABLE 406
#define HTTP_PROXY_AUTHENTICATION_REQUIRED 407
#define HTTP_REQUEST_TIMEOUT 408
#define HTTP_CONFLICT 409
#define HTTP_GONE 410
#define HTTP_LENGTH_REQUIRED 411
#define HTTP_PRECONDITION_FAILED 412
#define HTTP_PAYLOAD_TOO_LARGE 413
#define HTTP_URI_TOO_LONG 414
#define HTTP_UNSUPPORTED_MEDIA_TYPE 415
#define HTTP_RANGE_NOT_SATISFIABLE 416
#define HTTP_EXPECTATION_FAILED 417
#define HTTP_IM_A_TEAPOT 418
#define HTTP_INTERNAL_SERVER_ERROR 500
#define HTTP_NOT_IMPLEMENTED 501
#define HTTP_BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
#define HTTP_GATEWAY_TIMEOUT 504
#define HTTP_HTTP_VERSION_NOT_SUPPORTED 505
#define HTTP_VARIANT_ALSO_NEGOTIATES 506

#define HTTP_STATUS_CODE_100 "Continue"
#define HTTP_STATUS_CODE_101 "Switching Protocols"
#define HTTP_STATUS_CODE_200 "OK"
#define HTTP_STATUS_CODE_201 "Created"
#define HTTP_STATUS_CODE_202 "Accepted"
#define HTTP_STATUS_CODE_203 "Non-Authoritative Information"
#define HTTP_STATUS_CODE_204 "No Content"
#define HTTP_STATUS_CODE_205 "Reset Content"
#define HTTP_STATUS_CODE_206 "Partial Content"
#define HTTP_STATUS_CODE_300 "Multiple Choices"
#define HTTP_STATUS_CODE_301 "Moved Permanently"
#define HTTP_STATUS_CODE_302 "Found"
#define HTTP_STATUS_CODE_303 "See Other"
#define HTTP_STATUS_CODE_304 "Not Modified"
#define HTTP_STATUS_CODE_305 "Use Proxy"
#define HTTP_STATUS_CODE_307 "Temporary Redirect"
#define HTTP_STATUS_CODE_400 "Bad Request"
#define HTTP_STATUS_CODE_401 "Unauthorized"
#define HTTP_STATUS_CODE_402 "Payment Required"
#define HTTP_STATUS_CODE_403 "Forbidden"
#define HTTP_STATUS_CODE_404 "Not Found"
#define HTTP_STATUS_CODE_405 "Method Not Allowed"
#define HTTP_STATUS_CODE_406 "Not Acceptable"
#define HTTP_STATUS_CODE_407 "Proxy Authentication Required"
#define HTTP_STATUS_CODE_408 "Request Timeout"
#define HTTP_STATUS_CODE_409 "Conflict"
#define HTTP_STATUS_CODE_410 "Gone"
#define HTTP_STATUS_CODE_411 "Length Required"
#define HTTP_STATUS_CODE_412 "Precondition Failed"
#define HTTP_STATUS_CODE_413 "Payload Too Large"
#define HTTP_STATUS_CODE_414 "URI Too Long"
#define HTTP_STATUS_CODE_415 "Unsupported Media Type"
#define HTTP_STATUS_CODE_416 "Range Not Satisfiable"
#define HTTP_STATUS_CODE_417 "Expectation Failed"
#define HTTP_STATUS_CODE_418 "I'm a Teapot"
#define HTTP_STATUS_CODE_500 "Internal Server Error"
#define HTTP_STATUS_CODE_501 "Not Implemented"
#define HTTP_STATUS_CODE_502 "Bad Gateway"
#define HTTP_STATUS_CODE_503 "Service Unavailable"
#define HTTP_STATUS_CODE_504 "Gateway Timeout"
#define HTTP_STATUS_CODE_505 "HTTP Version Not Supported"

#define MIME_TYPE_TEXT "text/plain"
#define MIME_TYPE_HTML "text/html"
#define MIME_TYPE_CSS  "text/css"
#define MIME_TYPE_JS   "text/javascript"
#define MIME_TYPE_XML  "text/xml"

#define MIME_TYPE_PNG  "image/png"
#define MIME_TYPE_JPEG "image/jpeg"
#define MIME_TYPE_GIF  "image/gif"
#define MIME_TYPE_BMP  "image/bmp"

#define MIME_TYPE_JSON            "application/json"
#define MIME_TYPE_XML_APP         "application/xml"
#define MIME_TYPE_PDF             "application/pdf"
#define MIME_TYPE_ZIP             "application/zip"
#define MIME_TYPE_FORM_URLENCODED "application/x-www-form-urlencoded"

#define MIME_TYPE_VIDEO_MP4  "video/mp4"
#define MIME_TYPE_VIDEO_AVI  "video/x-msvideo"
#define MIME_TYPE_VIDEO_MPEG "video/mpeg"

#define MIME_TYPE_AUDIO_MP3 "audio/mpeg"
#define MIME_TYPE_AUDIO_WAV "audio/wav"
#define MIME_TYPE_AUDIO_OGG "audio/ogg"

#endif // HTTP_H
